package algo3.grupo3.modelo;


public class ExplosionToleTole extends EstrategiaExplosion {

	@Override
	public void explotar(Casilla casillaFuente, int rango, int fuerza) {
		
		if(casillaFuente == null)
			return;
		
		this.explotarHaciaArriba(casillaFuente, rango, fuerza);
		this.explotarHaciaAbajo(casillaFuente, rango, fuerza);
		this.explotarHaciaIzquierda(casillaFuente, rango, fuerza);
		this.explotarHaciaDerecha(casillaFuente, rango, fuerza);
	}//fin de explotar
	
	private void explotarHaciaArriba(Casilla casillaFuente, int rango, int fuerza){
		
		int expansion= 0;
		Casilla casillaActual= casillaFuente;
		
		while(expansion < rango ){
			casillaActual= casillaActual.obtenerCasillaSuperior();
			if(casillaActual == null)
				return;
			casillaActual.expandirExplosion(fuerza);
			expansion++;
		}
		
	}//fin de explotarHaciaArriba
	
	private void explotarHaciaAbajo(Casilla casillaFuente, int rango, int fuerza){
		
		int expansion= 0;
		Casilla casillaActual= casillaFuente;
		
		while(expansion < rango ){
			casillaActual= casillaActual.obtenerCasillaInferior();
			if(casillaActual == null)
				return;
			casillaActual.expandirExplosion(fuerza);
			expansion++;
		}
		
	}//fin de explotarHaciaAbajo
	
	private void explotarHaciaIzquierda(Casilla casillaFuente, int rango, int fuerza){
		
		int expansion= 0;
		Casilla casillaActual= casillaFuente;
		
		while(expansion < rango ){
			casillaActual= casillaActual.obtenerCasillaIzquierda();
			if(casillaActual == null)
				return;
			casillaActual.expandirExplosion(fuerza);
			expansion++;
		}
		
	}//fin de explotarHaciaIzquierda
	
	private void explotarHaciaDerecha(Casilla casillaFuente, int rango, int fuerza){
		
		int expansion= 0;
		Casilla casillaActual= casillaFuente;
		
		while(expansion < rango ){
			casillaActual= casillaActual.obtenerCasillaDerecha();
			if(casillaActual == null)
				return;
			casillaActual.expandirExplosion(fuerza);
			expansion++;
		}
		
	}//fin de explotarHaciaDerecha

}
